#include "consulta_insumos.h"
#include "ui_consulta_insumos.h"
#include <Insumos/registro_mod_insumos.h>

Consulta_Insumos::Consulta_Insumos(QWidget *parent):VentanaConsulta(parent)
{
        this->setWindowTitle("Consultar Insumos");
        indice = 0;

        modeloConsulta->setTable("insumo");
        modeloConsulta->setHeaderData(1, Qt::Horizontal, "Nombre");
        modeloConsulta->setHeaderData(2, Qt::Horizontal, "Unidad de Medida");
        modeloConsulta->setHeaderData(5, Qt::Horizontal, "Ultima Compra");
        modeloConsulta->select();

        filtro->setSourceModel(modeloConsulta);
        ui->tableView->setModel(filtro);
        QStringList lista;
        lista << "Nombre";
        ui->comboBuscarPor->addItems(lista);
        ui->tableView->setModel(filtro);

        ui->tableView->hideColumn(0);
        ui->tableView->hideColumn(3);
        ui->tableView->hideColumn(4);
        ui->tableView->hideColumn(6);
        ui->tableView->hideColumn(7);

        filtro->beginDeclareFilter();
        filtro->setFilter(6, QVariant("activo"), Qt::DisplayRole, Qt::MatchExactly);
        filtro->endDeclareFilter();


}

void Consulta_Insumos::on_registrar_clicked()
{
    Registro_Mod_Insumos *regInsumo = new Registro_Mod_Insumos();
    regInsumo->exec();
    modeloConsulta->select();
    delete regInsumo;
}

void Consulta_Insumos::on_modificar_clicked()
{

    QModelIndexList indexes = obtenerIndicesSeleccionados(0);
    if(indexes.count() == 1){

        QDjango::setDebugEnabled(true);
        QModelIndex index = indexes.at(0).sibling(indexes.at(0).row(), 0);

        int idInsumo = ui->tableView->model()->data(index).toInt();

        QDjangoQuerySet<Insumo> insumos;
        Insumo *ins = insumos.filter(QDjangoWhere("idinsumo", QDjangoWhere::Equals, idInsumo)).at(0);

        Registro_Mod_Insumos *modInsumo = new Registro_Mod_Insumos(this, ins);
        modInsumo->exec();
        modeloConsulta->select();
        delete modInsumo;
        delete ins;

    }
    else{

        QMessageBox m;
        m.setText("<b><p align=center>Debe Seleccionar un Insumo</b></p>");
        m.setIcon(QMessageBox::Information);
        m.exec();


    }

}

void Consulta_Insumos::on_eliminar_clicked()
{

    QModelIndexList indexes = obtenerIndicesSeleccionados(0);
    if(indexes.count() > 0) {
        QModelIndex index = indexes.at(0).sibling(indexes.at(0).row(), 0);
        int idIn = ui->tableView->model()->data(index).toInt();

        QDjangoQuerySet<Insumo> insumos;
        Insumo *insu = insumos.filter(QDjangoWhere("idinsumo", QDjangoWhere::Equals, idIn)).at(0);


      /*  QMessageBox mensaje;
        mensaje.setInformativeText("<p align=center>Esta seguro de que desea eliminar el registro del insumo: " + insu->getNombre() + "?</p>");
        mensaje.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
        mensaje.setIcon(QMessageBox::Question);

        int var = mensaje.exec(); */

        int var = cuadroMensaje("Confirmación de Baja","<p align=center>¿Desea dar de baja al insumo seleccionado: <b>"+insu->getNombre()+"?</b></p>", "pregunta");

        if(var == QMessageBox::Ok){

        /*  QSqlQuery q;
            QString id = ui->tableView->model()->data(index).toString();
            q.exec("delete from insumo_proveedor where insumo_id  = "+id+";"); */

            insu->setEstado("inactivo");
            insu->save();
            delete insu;
            modeloConsulta->select();

          }
    }

    else {

          cuadroMensaje("Debe seleccionar el Insumo que desea dar de baja", "");
          /*
          QMessageBox mensaje;
          mensaje.setText("Debe seleccionar un insumo para eliminar");
          mensaje.setIcon(QMessageBox::Information);
          mensaje.exec();
          */
    }



}

void Consulta_Insumos::on_textoBusqueda_textChanged(const QString &arg1)
{
    filtro->beginDeclareFilter();
    filtro->setFilter(indice, QVariant(arg1), Qt::DisplayRole, Qt::MatchContains);
    filtro->endDeclareFilter();
}


void Consulta_Insumos::on_comboBuscarPor_currentTextChanged(const QString &arg1)
{
    if(arg1 == "Nombre"){
      indice = 1;
    }

}

void Consulta_Insumos::on_refrescarTabla_clicked()
{
    for(int i = 0; i<ui->tableView->model()->columnCount(); i++)
        filtro->removeFilter(i);

    ui->comboBuscarPor->setCurrentIndex(0);
}

void Consulta_Insumos::on_checkActivos_toggled(bool checked)
{
    if(checked){

        filtro->beginDeclareFilter();
        filtro->setFilter(6, QVariant("activo"), Qt::DisplayRole, Qt::MatchExactly);
        filtro->endDeclareFilter();

    }
    else{
         filtro->removeFilter(6);

    }
}

void Consulta_Insumos::on_tableView_doubleClicked()
{
    Consulta_Insumos::on_modificar_clicked();
}


/*void Consulta_Insumos::on_actualizarBoton_clicked()
{
    ui->comboBuscarPor->setCurrentIndex(0);
    ui->textoBusqueda->clear();
    modeloConsultaConsulta->filter().clear();
    modeloConsultaConsulta->select();
}*/
